package com.hfjava.practice07;

import java.io.File;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

/**
 * @author Administrator
 * @version V1.0
 * @ProjectName:IntelliJ IDEA
 * @PackageName: com.hfjava.practice07
 * @ClassName: FileMap
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @date 2019/12/26 10:36
 * @Copyright 大牛版板所有
 */
public class FileMap {

    public static String dir() {
        System.out.print("请输入一个文件夹路径：");
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        return s;
    }

    public static void bianl(HashMap<String , Integer> map){
        Set<String> mapsarr = map.keySet();
        for(String s : mapsarr){
            System.out.println(s+ "类型有"+map.get(s));
        }
    }
    /*  hashmap对象，
     *  统计该文件夹(包含子文件夹)中每种类型的文件及个数
     *  文件数组
     *  遍历
     *  判断dir 是 递归   否 判断文件类型
     *  有此类型  map.put修改该类型key所对应的值value
     *  无此类型 map.put（key，1）
     */
    public static HashMap<String , Integer> sum(HashMap<String, Integer> map, File file){
        File[] farr = file.listFiles();
        for(File f : farr){
            int index = f.getName().lastIndexOf(".");
            String key = f.getName().substring(index + 1);
            if(f.isDirectory()){
                sum(map,f);
            }
            //寻找最后一次出现的. 切割得到文件类型
            //用文件类型和map中的key值比较
            else if(!map.containsKey(key)){
                //没有就添加key 值为1️
                map.put(key, 1);
                System.out.println(f);
            }else{
                //有就在原基础上加一
                int count = map.get(key) + 1;
                map.put(key, count);
                System.out.println(f);
            }
        }
        return map;
    }

    public static void main(String[] args) {
        HashMap<String , Integer> map1 = new HashMap<String, Integer>();
        File file = new File(dir());
        HashMap<String , Integer> map = sum(map1,file);
        bianl(map);
    }
}
